package 面试经典150题.二叉树;

import common.TreeNode;

/**
 * @author tmh
 * @date 2024/6/23 22:24
 * @description
 */
public class T129求根节点到叶节点数字之和 {
    public int sumNumbers(TreeNode root) {
        return dfs(root,0);
    }

    private int dfs(TreeNode node,int sum){
        if(node==null){
            return 0;
        }
        //sum*10+node.val就是当前的需要的值  --代表中的逻辑
        int currentSum = sum*10+node.val;
        //如果node的左节点和右节点都为null，就直接返回currentSum
        if(node.left==null&&node.right==null){
            return currentSum;
        }
        //往左递归  左的逻辑（不纠结leftSum是啥）
        int leftSum = dfs(node.left, currentSum);
        //往右递归  右的逻辑（不纠结rightSum是啥）
        int rightSum = dfs(node.right, currentSum);
        //返回leftSum+rightSum之和就行了
        return leftSum+rightSum;
    }
}
